<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html><head><title>QQuaternion Class Reference</title><style>h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
td.postheader { font-family: sans-serif }
tr.address { font-family: sans-serif }
body { background: #ffffff; color: black; }
</style></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr /><td align="left" valign="top" width="32"><img align="left" border="0" height="32" src="images/rb-logo.png" width="32" /></td><td width="1">&#160;&#160;</td><td class="postheader" valign="center"><a href="index.html"><font color="#004faf">Home</font></a>&#160;&#183; <a href="classes.html"><font color="#004faf">All Classes</font></a>&#160;&#183; <a href="modules.html"><font color="#004faf">Modules</font></a></td></table><h1 align="center">QQuaternion Class Reference<br /><sup><sup>[<a href="qtgui.html">QtGui</a> module]</sup></sup></h1><p>The QQuaternion class represents a quaternion consisting of a
vector and scalar. <a href="#details">More...</a></p>

<h3>Methods</h3><ul><li><div class="fn" /><b><a href="qquaternion.html#QQuaternion">__init__</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#QQuaternion-2">__init__</a></b> (<i>self</i>, float&#160;<i>aScalar</i>, float&#160;<i>xpos</i>, float&#160;<i>ypos</i>, float&#160;<i>zpos</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#QQuaternion-3">__init__</a></b> (<i>self</i>, float&#160;<i>aScalar</i>, QVector3D&#160;<i>aVector</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#QQuaternion-4">__init__</a></b> (<i>self</i>, QVector4D&#160;<i>aVector</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#QQuaternion-5">__init__</a></b> (<i>self</i>, QQuaternion)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#conjugate">conjugate</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qquaternion.html#isIdentity">isIdentity</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qquaternion.html#isNull">isNull</a></b> (<i>self</i>)</li><li><div class="fn" />float <b><a href="qquaternion.html#length">length</a></b> (<i>self</i>)</li><li><div class="fn" />float <b><a href="qquaternion.html#lengthSquared">lengthSquared</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#normalize">normalize</a></b> (<i>self</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#normalized">normalized</a></b> (<i>self</i>)</li><li><div class="fn" />QVector3D <b><a href="qquaternion.html#rotatedVector">rotatedVector</a></b> (<i>self</i>, QVector3D&#160;<i>vector</i>)</li><li><div class="fn" />float <b><a href="qquaternion.html#scalar">scalar</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#setScalar">setScalar</a></b> (<i>self</i>, float&#160;<i>aScalar</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#setVector">setVector</a></b> (<i>self</i>, QVector3D&#160;<i>aVector</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#setVector-2">setVector</a></b> (<i>self</i>, float&#160;<i>aX</i>, float&#160;<i>aY</i>, float&#160;<i>aZ</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#setX">setX</a></b> (<i>self</i>, float&#160;<i>aX</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#setY">setY</a></b> (<i>self</i>, float&#160;<i>aY</i>)</li><li><div class="fn" /><b><a href="qquaternion.html#setZ">setZ</a></b> (<i>self</i>, float&#160;<i>aZ</i>)</li><li><div class="fn" />QVector4D <b><a href="qquaternion.html#toVector4D">toVector4D</a></b> (<i>self</i>)</li><li><div class="fn" />QVector3D <b><a href="qquaternion.html#vector">vector</a></b> (<i>self</i>)</li><li><div class="fn" />float <b><a href="qquaternion.html#x">x</a></b> (<i>self</i>)</li><li><div class="fn" />float <b><a href="qquaternion.html#y">y</a></b> (<i>self</i>)</li><li><div class="fn" />float <b><a href="qquaternion.html#z">z</a></b> (<i>self</i>)</li></ul><h3>Static Methods</h3><ul><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#fromAxisAndAngle">fromAxisAndAngle</a></b> (QVector3D&#160;<i>axis</i>, float&#160;<i>angle</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#fromAxisAndAngle-2">fromAxisAndAngle</a></b> (float&#160;<i>x</i>, float&#160;<i>y</i>, float&#160;<i>z</i>, float&#160;<i>angle</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#nlerp">nlerp</a></b> (QQuaternion&#160;<i>q1</i>, QQuaternion&#160;<i>q2</i>, float&#160;<i>t</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#slerp">slerp</a></b> (QQuaternion&#160;<i>q1</i>, QQuaternion&#160;<i>q2</i>, float&#160;<i>t</i>)</li></ul><h3>Special Methods</h3><ul><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__add__">__add__</a></b> (<i>self</i>, QQuaternion&#160;<i>q2</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__div__">__div__</a></b> (<i>self</i>, float&#160;<i>divisor</i>)</li><li><div class="fn" />bool <b><a href="qquaternion.html#__eq__">__eq__</a></b> (<i>self</i>, QQuaternion&#160;<i>q2</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__iadd__">__iadd__</a></b> (<i>self</i>, QQuaternion&#160;<i>quaternion</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__idiv__">__idiv__</a></b> (<i>self</i>, float&#160;<i>divisor</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__imul__">__imul__</a></b> (<i>self</i>, float&#160;<i>factor</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__imul__-2">__imul__</a></b> (<i>self</i>, QQuaternion&#160;<i>quaternion</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__isub__">__isub__</a></b> (<i>self</i>, QQuaternion&#160;<i>quaternion</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__mul__">__mul__</a></b> (<i>self</i>, QQuaternion&#160;<i>q2</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__mul__-2">__mul__</a></b> (<i>self</i>, QQuaternion&#160;<i>quaternion</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__mul__-3">__mul__</a></b> (<i>self</i>, float&#160;<i>factor</i>)</li><li><div class="fn" />bool <b><a href="qquaternion.html#__ne__">__ne__</a></b> (<i>self</i>, QQuaternion&#160;<i>q2</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__neg__">__neg__</a></b> (<i>self</i>)</li><li><div class="fn" />str <b><a href="qquaternion.html#__repr__">__repr__</a></b> (<i>self</i>)</li><li><div class="fn" />QQuaternion <b><a href="qquaternion.html#__sub__">__sub__</a></b> (<i>self</i>, QQuaternion&#160;<i>q2</i>)</li></ul><a name="details" /><hr /><h2>Detailed Description</h2><p>This class can be pickled.</p><p>The QQuaternion class represents a quaternion consisting of a
vector and scalar.</p>
<p>Quaternions are used to represent rotations in 3D space, and
consist of a 3D rotation axis specified by the x, y, and z
coordinates, and a scalar representing the rotation angle.</p>
<hr /><h2>Method Documentation</h2><h3 class="fn"><a name="QQuaternion" />QQuaternion.__init__ (<i>self</i>)</h3><p>Constructs an identity quaternion, i.e. with coordinates (1, 0,
0, 0).</p>


<h3 class="fn"><a name="QQuaternion-2" />QQuaternion.__init__ (<i>self</i>, float&#160;<i>aScalar</i>, float&#160;<i>xpos</i>, float&#160;<i>ypos</i>, float&#160;<i>zpos</i>)</h3><p>Constructs a quaternion with the vector (<i>xpos</i>,
<i>ypos</i>, <i>zpos</i>) and <i>scalar</i>.</p>


<h3 class="fn"><a name="QQuaternion-3" />QQuaternion.__init__ (<i>self</i>, float&#160;<i>aScalar</i>, <a href="qvector3d.html">QVector3D</a>&#160;<i>aVector</i>)</h3><p>Constructs a quaternion vector from the specified <i>vector</i>
and <i>scalar</i>.</p>
<p><b>See also</b> <a href="qquaternion.html#vector">vector</a>()
and <a href="qquaternion.html#scalar">scalar</a>().</p>


<h3 class="fn"><a name="QQuaternion-4" />QQuaternion.__init__ (<i>self</i>, <a href="qvector4d.html">QVector4D</a>&#160;<i>aVector</i>)</h3><p>Constructs a quaternion from the components of
<i>vector</i>.</p>


<h3 class="fn"><a name="QQuaternion-5" />QQuaternion.__init__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>)</h3><h3 class="fn"><a name="conjugate" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.conjugate (<i>self</i>)</h3><p>Returns the conjugate of this quaternion, which is (-x, -y, -z,
scalar).</p>


<h3 class="fn"><a name="fromAxisAndAngle" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.fromAxisAndAngle (<a href="qvector3d.html">QVector3D</a>&#160;<i>axis</i>, float&#160;<i>angle</i>)</h3><p>Creates a normalized quaternion that corresponds to rotating
through <i>angle</i> degrees about the specified 3D
<i>axis</i>.</p>


<h3 class="fn"><a name="fromAxisAndAngle-2" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.fromAxisAndAngle (float&#160;<i>x</i>, float&#160;<i>y</i>, float&#160;<i>z</i>, float&#160;<i>angle</i>)</h3><p>Creates a normalized quaternion that corresponds to rotating
through <i>angle</i> degrees about the 3D axis (<i>x</i>, <i>y</i>,
<i>z</i>).</p>


<h3 class="fn"><a name="isIdentity" />bool QQuaternion.isIdentity (<i>self</i>)</h3><p>Returns true if the x, y, and z components of this quaternion
are set to 0.0, and the scalar component is set to 1.0; otherwise
returns false.</p>


<h3 class="fn"><a name="isNull" />bool QQuaternion.isNull (<i>self</i>)</h3><p>Returns true if the x, y, z, and scalar components of this
quaternion are set to 0.0; otherwise returns false.</p>


<h3 class="fn"><a name="length" />float QQuaternion.length (<i>self</i>)</h3><p>Returns the length of the quaternion. This is also called the
"norm".</p>
<p><b>See also</b> <a href="qquaternion.html#lengthSquared">lengthSquared</a>() and <a href="qquaternion.html#normalized">normalized</a>().</p>


<h3 class="fn"><a name="lengthSquared" />float QQuaternion.lengthSquared (<i>self</i>)</h3><p>Returns the squared length of the quaternion.</p>
<p><b>See also</b> <a href="qquaternion.html#length">length</a>().</p>


<h3 class="fn"><a name="nlerp" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.nlerp (<a href="qquaternion.html">QQuaternion</a>&#160;<i>q1</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>q2</i>, float&#160;<i>t</i>)</h3><p>Interpolates along the shortest linear path between the
rotational positions <i>q1</i> and <i>q2</i>. The value <i>t</i>
should be between 0 and 1, indicating the distance to travel
between <i>q1</i> and <i>q2</i>. The result will be <a href="qquaternion.html#normalized">normalized</a>().</p>
<p>If <i>t</i> is less than or equal to 0, then <i>q1</i> will be
returned. If <i>t</i> is greater than or equal to 1, then <i>q2</i>
will be returned.</p>
<p>The nlerp() function is typically faster than <a href="qquaternion.html#slerp">slerp</a>() and will give approximate
results to spherical interpolation that are good enough for some
applications.</p>
<p><b>See also</b> <a href="qquaternion.html#slerp">slerp</a>().</p>


<h3 class="fn"><a name="normalize" />QQuaternion.normalize (<i>self</i>)</h3><p>Normalizes the currect quaternion in place. Nothing happens if
this is a null quaternion or the length of the quaternion is very
close to 1.</p>
<p><b>See also</b> <a href="qquaternion.html#length">length</a>()
and <a href="qquaternion.html#normalized">normalized</a>().</p>


<h3 class="fn"><a name="normalized" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.normalized (<i>self</i>)</h3><p>Returns the normalized unit form of this quaternion.</p>
<p>If this quaternion is null, then a null quaternion is returned.
If the length of the quaternion is very close to 1, then the
quaternion will be returned as-is. Otherwise the normalized form of
the quaternion of length 1 will be returned.</p>
<p><b>See also</b> <a href="qquaternion.html#length">length</a>()
and <a href="qquaternion.html#normalize">normalize</a>().</p>


<h3 class="fn"><a name="rotatedVector" /><a href="qvector3d.html">QVector3D</a> QQuaternion.rotatedVector (<i>self</i>, <a href="qvector3d.html">QVector3D</a>&#160;<i>vector</i>)</h3><p>Rotates <i>vector</i> with this quaternion to produce a new
vector in 3D space. The following code:</p>
<pre class="cpp">
 QVector3D result <span class="operator">=</span> q<span class="operator">.</span>rotatedVector(vector);
</pre>
<p>is equivalent to the following:</p>
<pre class="cpp">
 QVector3D result <span class="operator">=</span> (q <span class="operator">*</span> <span class="type"><a href="qquaternion.html">QQuaternion</a></span>(<span class="number">0</span><span class="operator">,</span> vector) <span class="operator">*</span> q<span class="operator">.</span>conjugate())<span class="operator">.</span><a href="qquaternion.html#vector">vector</a>();
</pre>


<h3 class="fn"><a name="scalar" />float QQuaternion.scalar (<i>self</i>)</h3><p>Returns the scalar component of this quaternion.</p>
<p><b>See also</b> <a href="qquaternion.html#setScalar">setScalar</a>(), <a href="qquaternion.html#x">x</a>(), <a href="qquaternion.html#y">y</a>(),
and <a href="qquaternion.html#z">z</a>().</p>


<h3 class="fn"><a name="setScalar" />QQuaternion.setScalar (<i>self</i>, float&#160;<i>aScalar</i>)</h3><p>Sets the scalar component of this quaternion to
<i>scalar</i>.</p>
<p><b>See also</b> <a href="qquaternion.html#scalar">scalar</a>(),
<a href="qquaternion.html#setX">setX</a>(), <a href="qquaternion.html#setY">setY</a>(), and <a href="qquaternion.html#setZ">setZ</a>().</p>


<h3 class="fn"><a name="setVector" />QQuaternion.setVector (<i>self</i>, <a href="qvector3d.html">QVector3D</a>&#160;<i>aVector</i>)</h3><p>Sets the vector component of this quaternion to
<i>vector</i>.</p>
<p><b>See also</b> <a href="qquaternion.html#vector">vector</a>()
and <a href="qquaternion.html#setScalar">setScalar</a>().</p>


<h3 class="fn"><a name="setVector-2" />QQuaternion.setVector (<i>self</i>, float&#160;<i>aX</i>, float&#160;<i>aY</i>, float&#160;<i>aZ</i>)</h3><p>Sets the vector component of this quaternion to (<i>x</i>,
<i>y</i>, <i>z</i>).</p>
<p><b>See also</b> <a href="qquaternion.html#vector">vector</a>()
and <a href="qquaternion.html#setScalar">setScalar</a>().</p>


<h3 class="fn"><a name="setX" />QQuaternion.setX (<i>self</i>, float&#160;<i>aX</i>)</h3><p>Sets the x coordinate of this quaternion's vector to the given
<i>x</i> coordinate.</p>
<p><b>See also</b> <a href="qquaternion.html#x">x</a>(), <a href="qquaternion.html#setY">setY</a>(), <a href="qquaternion.html#setZ">setZ</a>(), and <a href="qquaternion.html#setScalar">setScalar</a>().</p>


<h3 class="fn"><a name="setY" />QQuaternion.setY (<i>self</i>, float&#160;<i>aY</i>)</h3><p>Sets the y coordinate of this quaternion's vector to the given
<i>y</i> coordinate.</p>
<p><b>See also</b> <a href="qquaternion.html#y">y</a>(), <a href="qquaternion.html#setX">setX</a>(), <a href="qquaternion.html#setZ">setZ</a>(), and <a href="qquaternion.html#setScalar">setScalar</a>().</p>


<h3 class="fn"><a name="setZ" />QQuaternion.setZ (<i>self</i>, float&#160;<i>aZ</i>)</h3><p>Sets the z coordinate of this quaternion's vector to the given
<i>z</i> coordinate.</p>
<p><b>See also</b> <a href="qquaternion.html#z">z</a>(), <a href="qquaternion.html#setX">setX</a>(), <a href="qquaternion.html#setY">setY</a>(), and <a href="qquaternion.html#setScalar">setScalar</a>().</p>


<h3 class="fn"><a name="slerp" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.slerp (<a href="qquaternion.html">QQuaternion</a>&#160;<i>q1</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>q2</i>, float&#160;<i>t</i>)</h3><p>Interpolates along the shortest spherical path between the
rotational positions <i>q1</i> and <i>q2</i>. The value <i>t</i>
should be between 0 and 1, indicating the spherical distance to
travel between <i>q1</i> and <i>q2</i>.</p>
<p>If <i>t</i> is less than or equal to 0, then <i>q1</i> will be
returned. If <i>t</i> is greater than or equal to 1, then <i>q2</i>
will be returned.</p>
<p><b>See also</b> <a href="qquaternion.html#nlerp">nlerp</a>().</p>


<h3 class="fn"><a name="toVector4D" /><a href="qvector4d.html">QVector4D</a> QQuaternion.toVector4D (<i>self</i>)</h3><p>Returns this quaternion as a 4D vector.</p>


<h3 class="fn"><a name="vector" /><a href="qvector3d.html">QVector3D</a> QQuaternion.vector (<i>self</i>)</h3><p>Returns the vector component of this quaternion.</p>
<p><b>See also</b> <a href="qquaternion.html#setVector">setVector</a>() and <a href="qquaternion.html#scalar">scalar</a>().</p>


<h3 class="fn"><a name="x" />float QQuaternion.x (<i>self</i>)</h3><p>Returns the x coordinate of this quaternion's vector.</p>
<p><b>See also</b> <a href="qquaternion.html#setX">setX</a>(),
<a href="qquaternion.html#y">y</a>(), <a href="qquaternion.html#z">z</a>(), and <a href="qquaternion.html#scalar">scalar</a>().</p>


<h3 class="fn"><a name="y" />float QQuaternion.y (<i>self</i>)</h3><p>Returns the y coordinate of this quaternion's vector.</p>
<p><b>See also</b> <a href="qquaternion.html#setY">setY</a>(),
<a href="qquaternion.html#x">x</a>(), <a href="qquaternion.html#z">z</a>(), and <a href="qquaternion.html#scalar">scalar</a>().</p>


<h3 class="fn"><a name="z" />float QQuaternion.z (<i>self</i>)</h3><p>Returns the z coordinate of this quaternion's vector.</p>
<p><b>See also</b> <a href="qquaternion.html#setZ">setZ</a>(),
<a href="qquaternion.html#x">x</a>(), <a href="qquaternion.html#y">y</a>(), and <a href="qquaternion.html#scalar">scalar</a>().</p>


<h3 class="fn"><a name="__add__" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__add__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>q2</i>)</h3><h3 class="fn"><a name="__div__" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__div__ (<i>self</i>, float&#160;<i>divisor</i>)</h3><h3 class="fn"><a name="__eq__" />bool QQuaternion.__eq__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>q2</i>)</h3><h3 class="fn"><a name="__iadd__" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__iadd__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>quaternion</i>)</h3><h3 class="fn"><a name="__idiv__" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__idiv__ (<i>self</i>, float&#160;<i>divisor</i>)</h3><h3 class="fn"><a name="__imul__" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__imul__ (<i>self</i>, float&#160;<i>factor</i>)</h3><h3 class="fn"><a name="__imul__-2" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__imul__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>quaternion</i>)</h3><h3 class="fn"><a name="__isub__" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__isub__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>quaternion</i>)</h3><h3 class="fn"><a name="__mul__" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__mul__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>q2</i>)</h3><h3 class="fn"><a name="__mul__-2" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__mul__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>quaternion</i>)</h3><h3 class="fn"><a name="__mul__-3" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__mul__ (<i>self</i>, float&#160;<i>factor</i>)</h3><h3 class="fn"><a name="__ne__" />bool QQuaternion.__ne__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>q2</i>)</h3><h3 class="fn"><a name="__neg__" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__neg__ (<i>self</i>)</h3><h3 class="fn"><a name="__repr__" />str QQuaternion.__repr__ (<i>self</i>)</h3><h3 class="fn"><a name="__sub__" /><a href="qquaternion.html">QQuaternion</a> QQuaternion.__sub__ (<i>self</i>, <a href="qquaternion.html">QQuaternion</a>&#160;<i>q2</i>)</h3><address><hr /><div align="center"><table border="0" cellspacing="0" width="100%"><tr class="address"><td align="left" width="25%">PyQt&#160;snapshot-4.9.5-9eb6aac99275 for X11</td><td align="center" width="50%">Copyright &#169; <a href="http://www.riverbankcomputing.com">Riverbank&#160;Computing&#160;Ltd</a> and <a href="http://www.qtsoftware.com">Nokia</a> 2012</td><td align="right" width="25%">Qt&#160;4.8.3</td></tr></table></div></address></body></html>